#ifndef __FIRMWARE_UTILS_H__
#define __FIRMWARE_UTILS_H__

#include "fw/vbb_Utils.h"
#include "fw/vbb_USART.h"

void vbb_AdditionalInit(void);
void vbb_CONSOLE_GotCommand(const char * Command);
void vbb_CONSOLE_Printf(const char * Format, ...);
void vbb_CONSOLE_Flush(void);

char * vbb_FindStr(const char * SourceString, const char * MatchString);
bool vbb_StartWith(const char * Message, const char * Header);
unsigned int vbb_GetLen(const char * SrcStr);
char * vbb_GetStr(char * DstStr, const char * SrcStr, const char * HeaderStr, const char * FooterStr);
char * vbb_ExtractStr(char * DstStr, const char * SrcStr, const char * HeaderStr, const char * FooterStr);
char * vbb_StrCpy(char * DestBuffer, const char * SourceBuffer, int Length);
void vbb_ReplaceStr(char * Message, const char * MatchStr, const char * ReplaceStr);
void vbb_CleanMessage(char * Message, const char * UnwantedChars);
void vbb_CleanMessage2(char * Message, int Len);
bool vbb_ProcessCommand(const char * Number, const char * MessageBody);
char * vbb_BuildString(const char * Format, ...);
unsigned int vbb_INFLASH_Write(unsigned int Addr, const char * Data, int DataLen);

#endif
